home *** CD-ROM | disk | FTP | other *** search
Wrap
SSSSTTTTBBBBMMMMVVVV((((3333SSSS)))) SSSSTTTTBBBBMMMMVVVV((((3333SSSS)))) NNNNAAAAMMMMEEEE SSSSTTTTBBBBMMMMVVVV, DDDDTTTTBBBBMMMMVVVV, CCCCTTTTBBBBMMMMVVVV, ZZZZTTTTBBBBMMMMVVVV - Multiplies a real or complex vector by a real or complex triangular band matrix SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS Single precision Fortran: CCCCAAAALLLLLLLL SSSSTTTTBBBBMMMMVVVV ((((_u_p_l_o,,,, _t_r_a_n_s,,,, _d_i_a_g,,,, _n,,,, _k,,,, _a,,,, _l_d_a,,,, _x,,,, _i_n_c_x)))) C/C++: ####iiiinnnncccclllluuuuddddeeee <<<<ssssccccssssllll____bbbbllllaaaassss....hhhh>>>> vvvvooooiiiidddd ssssttttbbbbmmmmvvvv ((((cccchhhhaaaarrrr *_u_p_l_o,,,, cccchhhhaaaarrrr *_t_r_a_n_s,,,, cccchhhhaaaarrrr *_d_i_a_g,,,, iiiinnnntttt _n,,,, iiiinnnntttt _k,,,, ffffllllooooaaaatttt *_a,,,, iiiinnnntttt _l_d_a,,,, ffffllllooooaaaatttt *_x,,,, iiiinnnntttt _i_n_c_x))));;;; Double precision Fortran: CCCCAAAALLLLLLLL DDDDTTTTBBBBMMMMVVVV ((((_u_p_l_o,,,, _t_r_a_n_s,,,, _d_i_a_g,,,, _n,,,, _k,,,, _a,,,, _l_d_a,,,, _x,,,, _i_n_c_x)))) C/C++: ####iiiinnnncccclllluuuuddddeeee <<<<ssssccccssssllll____bbbbllllaaaassss....hhhh>>>> vvvvooooiiiidddd ddddttttbbbbmmmmvvvv ((((cccchhhhaaaarrrr *_u_p_l_o,,,, cccchhhhaaaarrrr *_t_r_a_n_s,,,, cccchhhhaaaarrrr *_d_i_a_g,,,, iiiinnnntttt _n,,,, iiiinnnntttt _k,,,, ddddoooouuuubbbblllleeee *_a,,,, iiiinnnntttt _l_d_a,,,, ddddoooouuuubbbblllleeee *_x,,,, iiiinnnntttt _i_n_c_x))));;;; Single precision complex Fortran: CCCCAAAALLLLLLLL CCCCTTTTBBBBMMMMVVVV ((((*_u_p_l_o,,,, _t_r_a_n_s,,,, _d_i_a_g,,,, _n,,,, _k,,,, _a,,,, _l_d_a,,,, _x,,,, _i_n_c_x)))) C/C++: ####iiiinnnncccclllluuuuddddeeee <<<<ssssccccssssllll____bbbbllllaaaassss....hhhh>>>> vvvvooooiiiidddd ccccttttbbbbmmmmvvvv ((((cccchhhhaaaarrrr *_u_p_l_o,,,, cccchhhhaaaarrrr *_t_r_a_n_s,,,, cccchhhhaaaarrrr *_d_i_a_g,,,, iiiinnnntttt _n,,,, iiiinnnntttt _k,,,, ssssccccssssllll____ccccoooommmmpppplllleeeexxxx *_a,,,, iiiinnnntttt _l_d_a,,,, ssssccccssssllll____ccccoooommmmpppplllleeeexxxx *_x,,,, iiiinnnntttt _i_n_c_x))));;;; C++ STL: ####iiiinnnncccclllluuuuddddeeee <<<<ccccoooommmmpppplllleeeexxxx....hhhh>>>> ####iiiinnnncccclllluuuuddddeeee <<<<ssssccccssssllll____bbbbllllaaaassss....hhhh>>>> vvvvooooiiiidddd ccccttttbbbbmmmmvvvv ((((cccchhhhaaaarrrr *_u_p_l_o,,,, cccchhhhaaaarrrr *_t_r_a_n_s,,,, cccchhhhaaaarrrr *_d_i_a_g,,,, iiiinnnntttt _n,,,, iiiinnnntttt _k,,,, ccccoooommmmpppplllleeeexxxx<<<<ffffllllooooaaaatttt>>>> *_a,,,, iiiinnnntttt _l_d_a,,,, ccccoooommmmpppplllleeeexxxx<<<<ffffllllooooaaaatttt>>>> *_x,,,, iiiinnnntttt _i_n_c_x))));;;; Double precision complex Fortran: CCCCAAAALLLLLLLL ZZZZTTTTBBBBMMMMVVVV ((((_u_p_l_o,,,, _t_r_a_n_s,,,, _d_i_a_g,,,, _n,,,, _k,,,, _a,,,, _l_d_a,,,, _x,,,, _i_n_c_x)))) C/C++: ####iiiinnnncccclllluuuuddddeeee <<<<ssssccccssssllll____bbbbllllaaaassss....hhhh>>>> vvvvooooiiiidddd zzzzttttbbbbmmmmvvvv cccchhhhaaaarrrr *_u_p_l_o,,,, cccchhhhaaaarrrr *_t_r_a_n_s,,,, cccchhhhaaaarrrr *_d_i_a_g,,,, iiiinnnntttt _n,,,, iiiinnnntttt _k,,,, ssssccccssssllll____zzzzoooommmmpppplllleeeexxxx *_a,,,, iiiinnnntttt _l_d_a,,,, ssssccccssssllll____zzzzoooommmmpppplllleeeexxxx *_x,,,, iiiinnnntttt _i_n_c_x))));;;; PPPPaaaaggggeeee 1111 SSSSTTTTBBBBMMMMVVVV((((3333SSSS)))) SSSSTTTTBBBBMMMMVVVV((((3333SSSS)))) C++ STL: ####iiiinnnncccclllluuuuddddeeee <<<<ccccoooommmmpppplllleeeexxxx....hhhh>>>> ####iiiinnnncccclllluuuuddddeeee <<<<ssssccccssssllll____bbbbllllaaaassss....hhhh>>>> vvvvooooiiiidddd zzzzttttbbbbmmmmvvvv ((((cccchhhhaaaarrrr *_u_p_l_o,,,, cccchhhhaaaarrrr *_t_r_a_n_s,,,, cccchhhhaaaarrrr *_d_i_a_g,,,, iiiinnnntttt _n,,,, iiiinnnntttt _k,,,, ccccoooommmmpppplllleeeexxxx<<<<ddddoooouuuubbbblllleeee>>>> *_a,,,, iiiinnnntttt _l_d_a,,,, ccccoooommmmpppplllleeeexxxx<<<<ddddoooouuuubbbblllleeee>>>> *_x,,,, iiiinnnntttt _i_n_c_x))));;;; IIIIMMMMPPPPLLLLEEEEMMMMEEEENNNNTTTTAAAATTTTIIIIOOOONNNN These routines are part of the SCSL Scientific Library and can be loaded using either the ----llllssssccccssss or the ----llllssssccccssss____mmmmpppp option. The ----llllssssccccssss____mmmmpppp option directs the linker to use the multi-processor version of the library. When linking to SCSL with ----llllssssccccssss or ----llllssssccccssss____mmmmpppp, the default integer size is 4 bytes (32 bits). Another version of SCSL is available in which integers are 8 bytes (64 bits). This version allows the user access to larger memory sizes and helps when porting legacy Cray codes. It can be loaded by using the ----llllssssccccssss____iiii8888 option or the ----llllssssccccssss____iiii8888____mmmmpppp option. A program may use only one of the two versions; 4-byte integer and 8-byte integer library calls cannot be mixed. The C and C++ prototypes shown above are appropriate for the 4-byte integer version of SCSL. When using the 8-byte integer version, the variables of type iiiinnnntttt become lllloooonnnngggg lllloooonnnngggg and the <<<<ssssccccssssllll____bbbbllllaaaassss____iiii8888....hhhh>>>> header file should be included. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN SSSSTTTTBBBBMMMMVVVV and DDDDTTTTBBBBMMMMVVVV multiply a real vector by a real triangular band matrix. CCCCTTTTBBBBMMMMVVVV and ZZZZTTTTBBBBMMMMVVVV multiply a complex vector by a complex triangular band matrix. These routines perform one of the following matrix-vector operations: _x <- _A_x _x <- _A_T_x _x <- _A_H_x (CCCCTTTTBBBBMMMMVVVV and ZZZZTTTTBBBBMMMMVVVV only) where _A_T is the transpose of _A, _A_H is the conjugate transpose of _A, _x is an _n-element vector, and _A may be either a unit or nonunit _n-by-_n upper or lower triangular band matrix with (_k+1) diagonals. See the NOTES section of this man page for information about the interpretation of the data types described in the following arguments. These routines have the following arguments: _u_p_l_o Character. (input) Specifies whether the matrix is upper or lower triangular, as follows: PPPPaaaaggggeeee 2222 SSSSTTTTBBBBMMMMVVVV((((3333SSSS)))) SSSSTTTTBBBBMMMMVVVV((((3333SSSS)))) _u_p_l_o = 'U' or 'u': _A is an upper triangular matrix. _u_p_l_o = 'L' or 'l' _A is a lower triangular matrix. For C/C++, a pointer to this character is passed. _t_r_a_n_s Character. (input) Specifies the operation to be performed, as follows: _t_r_a_n_s = 'N' or 'n': _x <- _A_x _t_r_a_n_s = 'T' or 't': _x <- _A_T_x _t_r_a_n_s = 'C' or 'c': _x <- _A_T_x (SSSSTTTTBBBBMMMMVVVV, DDDDTTTTBBBBMMMMVVVV), or _x <- _A_H_x (CCCCTTTTBBBBMMMMVVVV, ZZZZTTTTBBBBMMMMVVVV) For C/C++, a pointer to this character is passed. _d_i_a_g Character. (input) Specifies whether _A is unit triangular, as follows: _d_i_a_g = 'U' or 'u': _A is assumed to be unit triangular. _d_i_a_g = 'N' or 'n': _A is not assumed to be unit triangular. For C/C++, a pointer to this character is passed. _n Integer. (input) Specifies the order of matrix _A. _n >= 0. _k Integer. (input) _u_p_l_o = 'U' or 'u': _k specifies the number of superdiagonals of matrix _A. _u_p_l_o = 'L' or 'l': _k specifies the number of subdiagonals of matrix _A. _k >= 0. _a Array of dimension (_l_d_a,_n). (input) SSSSTTTTBBBBMMMMVVVV: Single precision array. DDDDTTTTBBBBMMMMVVVV: Double precision array. CCCCTTTTBBBBMMMMVVVV: Single precision complex array. ZZZZTTTTBBBBMMMMVVVV: Double precision complex array. Before entry with _u_p_l_o = 'U' or 'u', the leading (_k+1)-by-_n upper part of array _a must contain the upper triangular band part of the matrix of coefficients, supplied column-by-column, with the leading diagonal of the matrix in row (_k+1) of the array, the first superdiagonal starting at position 2 in row _k, and so on. The top left _k-by-_k triangle of array _a is not referenced. PPPPaaaaggggeeee 3333 SSSSTTTTBBBBMMMMVVVV((((3333SSSS)))) SSSSTTTTBBBBMMMMVVVV((((3333SSSS)))) Before entry with _u_p_l_o = 'L' or 'l', the leading (_k+1)-by-_n part of array _a must contain the lower triangular band part of the matrix of coefficients, supplied column-by-column, with the leading diagonal of the matrix in row 1 of the array, the first subdiagonal starting at position 1 in row 2, and so on. The bottom right _k-by-_k triangle of array _a is not referenced. See the NOTES section for examples of Fortran code that transfer upper and lower triangular band matrices from conventional full matrix storage to band storage. When _d_i_a_g = 'U' or 'u', these routines assume that all elements of the array _a that represent diagonal elements of the matrix _A are 1. In this case, neither of these routines will reference any of the diagonal elements. _l_d_a Integer. (input) Specifies the first dimension of _a as declared in the calling program. _l_d_a >= (_k+1). _x Array of dimension 1+(_n-1) * |_i_n_c_x|. (input and output) SSSSTTTTBBBBMMMMVVVV: Single precision array. DDDDTTTTBBBBMMMMVVVV: Double precision array. CCCCTTTTBBBBMMMMVVVV: Single precision complex array. ZZZZTTTTBBBBMMMMVVVV: Double precision complex array. Contains the vector _x. On exit, the transformed vector overwrites array _x. _i_n_c_x Integer. (input) Specifies the increment for the elements of _x. _i_n_c_x must not be 0. NNNNOOOOTTTTEEEESSSS The following program segment transfers an upper triangular band matrix from conventional full matrix storage to band storage: DO 20, J = 1, N M = K + 1 - J DO 10, I = MAX( 1, J - K ), J A( M + I, J ) = MATRIX( I, J ) 10 CONTINUE 20 CONTINUE The following program segment transfers a lower triangular band matrix from conventional full matrix storage to band storage: DO 20, J = 1, N M = 1 - J DO 10, I = J, MIN( N, J + K ) A( M + I, J ) = MATRIX( I, J ) 10 CONTINUE 20 CONTINUE PPPPaaaaggggeeee 4444 SSSSTTTTBBBBMMMMVVVV((((3333SSSS)))) SSSSTTTTBBBBMMMMVVVV((((3333SSSS)))) SSSSTTTTBBBBMMMMVVVV, DDDDTTTTBBBBMMMMVVVV, CCCCTTTTBBBBMMMMVVVV and ZZZZTTTTBBBBMMMMVVVV are Level 2 Basic Linear Algebra Subprograms (Level 2 BLAS). When working backward (_i_n_c_x < 0), each routine starts at the end of the vector and moves backward, as follows: _x(1-_i_n_c_x * (_n-1)), _x(1-_i_n_c_x * (_n-2)), ..., _x(1) DDDDaaaattttaaaa TTTTyyyyppppeeeessss The following data types are described in this documentation: TTTTeeeerrrrmmmm UUUUsssseeeedddd DDDDaaaattttaaaa ttttyyyyppppeeee Fortran: Array dimensioned _n xxxx((((nnnn)))) Array of dimensions (_m,_n) xxxx((((mmmm,,,,nnnn)))) Character CCCCHHHHAAAARRRRAAAACCCCTTTTEEEERRRR Integer IIIINNNNTTTTEEEEGGGGEEEERRRR (IIIINNNNTTTTEEEEGGGGEEEERRRR****8888 for ----llllssssccccssss____iiii8888[[[[____mmmmpppp]]]]) Single precision RRRREEEEAAAALLLL Double precision DDDDOOOOUUUUBBBBLLLLEEEE PPPPRRRREEEECCCCIIIISSSSIIIIOOOONNNN Single precision complex CCCCOOOOMMMMPPPPLLLLEEEEXXXX Double precision complex DDDDOOOOUUUUBBBBLLLLEEEE CCCCOOOOMMMMPPPPLLLLEEEEXXXX C/C++: Array dimensioned _n xxxx[[[[_n]]]] Array of dimensions (_m,_n) xxxx[[[[mmmm****nnnn]]]] Character cccchhhhaaaarrrr Integer iiiinnnntttt (lllloooonnnngggg lllloooonnnngggg for ----llllssssccccssss____iiii8888[[[[____mmmmpppp]]]]) Single precision ffffllllooooaaaatttt Double precision ddddoooouuuubbbblllleeee Single precision complex ssssccccssssllll____ccccoooommmmpppplllleeeexxxx Double precision complex ssssccccssssllll____zzzzoooommmmpppplllleeeexxxx PPPPaaaaggggeeee 5555 SSSSTTTTBBBBMMMMVVVV((((3333SSSS)))) SSSSTTTTBBBBMMMMVVVV((((3333SSSS)))) C++ STL: Array dimensioned _n xxxx[[[[_n]]]] Array of dimensions (_m,_n) xxxx[[[[mmmm****nnnn]]]] Character cccchhhhaaaarrrr Integer iiiinnnntttt (lllloooonnnngggg lllloooonnnngggg for ----llllssssccccssss____iiii8888[[[[____mmmmpppp]]]]) Single precision ffffllllooooaaaatttt Double precision ddddoooouuuubbbblllleeee Single precision complex ccccoooommmmpppplllleeeexxxx<<<<ffffllllooooaaaatttt>>>> Double precision complex ccccoooommmmpppplllleeeexxxx<<<<ddddoooouuuubbbblllleeee>>>> Note that you can explicitly declare multidimensional C/C++ arrays provided that the array dimensions are swapped with respect to the Fortran declaration (e.g., xxxx[[[[nnnn]]]][[[[mmmm]]]] in C/C++ versus xxxx((((mmmm,,,,nnnn)))) in Fortran). To avoid a compiler type mismatch error in C++ (or a compiler warning message in C), however, the array should be cast to a pointer of the appropriate type when passed as an argument to a SCSL routine. SSSSEEEEEEEE AAAALLLLSSSSOOOO IIIINNNNTTTTRRRROOOO____SSSSCCCCSSSSLLLL(3S), IIIINNNNTTTTRRRROOOO____BBBBLLLLAAAASSSS2222(3S) IIIINNNNTTTTRRRROOOO____CCCCBBBBLLLLAAAASSSS(3S) for information about using the C interface to Fortran 77 Basic Linear Algebra Subprograms (legacy BLAS) set forth by the Basic Linear Algebra Subprograms Technical Forum. PPPPaaaaggggeeee 6666